package com.dji.sdk.sample.demo.camera;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Environment;
import com.dji.sdk.sample.R;
import com.dji.sdk.sample.internal.controller.DJISampleApplication;
import com.dji.sdk.sample.internal.utils.DownloadHandler;
import com.dji.sdk.sample.internal.utils.ModuleVerificationUtil;
import com.dji.sdk.sample.internal.utils.ToastUtils;
import com.dji.sdk.sample.internal.view.BaseThreeBtnView;
import dji.common.camera.SettingsDefinitions;
import dji.common.error.DJIError;
import dji.common.util.CommonCallbacks;
import dji.sdk.camera.MediaFile;
import dji.sdk.camera.MediaManager;
import java.io.File;
import java.util.List;
/**
* Class for fetching the media.
*/
public class FetchMediaView extends BaseThreeBtnView {
private MediaFile media;
private MediaManager mediaManager;
public FetchMediaView(Context context) {
super(context);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (ModuleVerificationUtil.isCameraModuleAvailable()) {
if (ModuleVerificationUtil.isMediaManagerAvailable()) {
DJISampleApplication.getProductInstance()
.getCamera()
.setMode(SettingsDefinitions.CameraMode.MEDIA_DOWNLOAD,
new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (null == djiError) fetchMediaList();
}
});
if (mediaManager == null) {
mediaManager = DJISampleApplication.getProductInstance().getCamera().getMediaManager();
}
} else {
changeDescription(R.string.not_support_mediadownload);
}
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (ModuleVerificationUtil.isCameraModuleAvailable()) {
DJISampleApplication.getProductInstance()
.getCamera()
.setMode(SettingsDefinitions.CameraMode.SHOOT_PHOTO, null);
}
}
@Override
protected int getMiddleBtnTextResourceId() {
return R.string.fetch_media_view_fetch_thumbnail;
}
@Override
protected int getLeftBtnTextResourceId() {
return R.string.fetch_media_view_fetch_preview;
}
@Override
protected int getRightBtnTextResourceId() {
return R.string.fetch_media_view_fetch_media;
}
@Override
protected int getDescriptionResourceId() {
if (!ModuleVerificationUtil.isMediaManagerAvailable()) {
return R.string.not_support_mediadownload;
} else {
return R.string.support_mediadownload;
}
}
@Override
protected void handleMiddleBtnClick() {
// Fetch Thumbnail Button
if (ModuleVerificationUtil.isMediaManagerAvailable() && media != null && mediaManager != null) {
mediaManager.fetchThumbnail(media, new DownloadHandler<Bitmap>());
}
}
@Override
protected void handleLeftBtnClick() {
// Fetch Preview Button
if (ModuleVerificationUtil.isMediaManagerAvailable() && media != null && mediaManager != null) {
mediaManager.fetchPreviewImage(media, new DownloadHandler<Bitmap>());
}
}
@Override
protected void handleRightBtnClick() {
// Fetch Media Data Button
if (ModuleVerificationUtil.isCameraModuleAvailable() && media != null && mediaManager != null) {
File destDir = new File(Environment.getExternalStorageDirectory().
getPath() + "/Dji_Sdk_Test/");
mediaManager.fetchMediaData(media, destDir, "testName", new DownloadHandler<String>());
}
}
// Initialize the view with getting a media file.
private void fetchMediaList() {
if (ModuleVerificationUtil.isMediaManagerAvailable()) {
DJISampleApplication.getProductInstance()
.getCamera()
.getMediaManager()
.fetchMediaList(new MediaManager.DownloadListener<List<MediaFile>>() {
String str;
@Override
public void onStart() {
changeDescription("Start fetch media list");
}
@Override
public void onRateUpdate(long total, long current, long persize) {
changeDescription("in progress");
}
@Override
public void onProgress(long l, long l1) {
}
@Override
public void onSuccess(List<MediaFile> djiMedias) {
if (null != djiMedias) {
if (!djiMedias.isEmpty()) {
media = djiMedias.get(0);
str = "Total Media files:"
+ djiMedias.size()
+ "\n"
+ "Media 1: "
+ djiMedias.get(0).getFileName();
changeDescription(str);
} else {
str = "No Media in SD Card";
changeDescription(str);
}
}
}
@Override
public void onFailure(DJIError djiError) {
changeDescription(djiError.getDescription());
}
});
}
}
@Override
public int getDescription() {
return R.string.camera_listview_download_media;
}
}